# 定义一个空列表作为栈
stack = []

# 压栈操作
def push(item):
    stack.append(item)

# 弹栈操作
def pop():
    if not is_empty():
        return stack.pop()
    else:
        raise IndexError("pop from an empty stack")

# 检查栈是否为空
def is_empty():
    return len(stack) == 0

# 获取栈的大小
def size():
    return len(stack)

# 查看栈顶元素
def peek():
    if not is_empty():
        return stack[-1]
    else:
        return None


# 使用栈的示例
if __name__ == "__main__":
    # 初始时栈为空
    print("栈是否为空？", is_empty())  # 输出: 栈是否为空？ True

    # 向栈中添加元素
    push("apple")
    push("banana")
    push("cherry")

    # 输出栈的大小
    print("栈的大小：", size())  # 输出: 栈的大小： 3

    # 输出栈顶元素
    print("栈顶元素：", peek())  # 输出: 栈顶元素： cherry

    # 从栈中弹出元素
    print("弹出栈顶元素：", pop())  # 输出: 弹出栈顶元素： cherry

    # 再次输出栈顶元素
    print("栈顶元素：", peek())  # 输出: 栈顶元素： banana

    # 再次输出栈的大小
    print("栈的大小：", size())  # 输出: 栈的大小： 2

    # 继续弹出直到栈为空
    while not is_empty():
        print("弹出栈顶元素：", pop())  # 依次输出: banana, apple

    # 最后检查栈是否为空
    print("栈是否为空？", is_empty())  # 输出: 栈是否为空？ True
